﻿#ifndef  _FINDFUND_H_
#define _FINDFUND_H_
#include"Http.h"
#include<map>
#include<string>
#include<QString>
#include<vector>
#include <mutex>
#include"FundInfo.h"
//基金查询类
class FindFund
{
public:
	FindFund() {};
public:
	//查询单个基金历史数据一页
	const int FindHistoryOnePage(const int code, const int Index=1,const int Size=20);
	//查询单个基金历史数据
	const int FindHistoryOne(const int code, const int Size = 20);
	//写入本地CSV-基金的历史数据
	const int WriteHistoryOne(const int code,const QString& path);
	//写入本地CSV-全部已知基金的历史数据 Index开始的序号
	const int WriteHistoryAll(const QString& path, const int Index = 1, const int Size=1000);
	//写入本地CSV-全部已知基金的历史数据 code基金编号查询，从下一个开始下载
	const int WriteHistoryAll(const QString& path, const QString& code, const int Size=1000);
	//读取本地CSV-基金的历史数据
	const int ReadHistoryOne(const QString& pathName);
	//遍历基金历史数据
	void whileFundHistory(const int code);
	//历史明细数据
	map<int, map<QString, HistoricalDetails>>& FundHistory();
public:
	//查询全部基金的名字和基金代码
	const int FindFundName();
	//写入到本地CSV-基金的名字和基金代码基金类型
	const int WriteFundName(const QString&pathName);
	//读取本地CSV-基金的名字和基金代码基金类型
	const int ReadFundName(const QString& pathName);
	//遍历基金详情
	void whileFundName();
	//输出基金信息
	const QString FundName(const int code);
	//返回全体基金基本信息表格的引用
	map<int, FundInfo>& FundForm();
	//清除基金基本信息表格数据
	void claerFundForm();
public:
	//根据基金代码查询基金名字
	static const QString FindName(const int code);
	//基金代码数字转QString
	static const QString FindCode(const int num);
	//基金代码QString转数字
	static const int FindCode(const string& code);
	static const QString GetFilePath(const QString& PathName);
	static const QString GetFileName(const QString& PathName,const bool suffix=true);
private:
	map<int, FundInfo> m_FundForm;//基金表格
	map<int,map<QString, HistoricalDetails>>m_History;//历史明细
};
#endif // ! _FindFund_H_
